package com.aust.lambda;

public class TestLambda5 {

    /**
     * 方法前没有加 static，它叫做实例方法，也就是：
     * 必须依赖于某个类的对象（实例）来调用。
     * 这是因为：
     * 实例方法访问的可能是对象的状态（实例变量）
     * 而只有在创建对象之后，实例变量才存在
     * 所以 JVM 必须知道调用这个方法的“对象是谁”
     *
     * @param a
     * @param b
     * @return
     */
    public int add(int a, int b) {
        return a + b;
    }

    /**
     * 方法前加了 static，它叫做静态方法，也就是：
     * 属于类本身，而不是属于某个具体对象。
     * 这意味着：
     * 不需要创建对象就能调用它
     * JVM 在加载类时就分配内存，直接通过类名调用即可
     *
     * @param a
     * @param b
     * @param c
     * @return
     */
    public static int add(int a, int b, int c) {
        return a + b + c;
    }

    /**
     * 非 static 方法 属于对象，必须先创建对象才能调用
     * static 方法 属于类本身，可以直接用类名调用（更推荐）
     * 在同一个类中调用 static 方法时，可以省略类名
     *
     * @param args
     */
    public static void main(String[] args) {
        System.out.println(new TestLambda5().add(1, 2));
        System.out.println(add(1, 2, 3));
    }
}
